<?php


class TbfArray {
    static function first($a){
        if (empty($a)){
            return null;
        }
        return array_shift($a);
    }

    static function last($a){
        if (empty($a)){
            return null;
        }
        return array_pop($a);
    }
    //把[]map[string]string -> map[string]map[string]string
    static function remap($data,$fieldName='id'){
        $output = array();
        foreach($data as $row){
            $output[$row[$fieldName]] = $row;
        }
        return $output;
    }

    static function getStringOrEmpty($array,$key){
        if (empty($array[$key])){
            return '';
        }
        $value = $array[$key];
        if (!is_string($value)){
            return '';
        }
        return $value;
    }
    static function getArrayOrEmpty($array,$key){
        if (empty($array[$key])){
            return array();
        }
        $value = $array[$key];
        if (!is_array($value)){
            return array();
        }
        return $value;
    }

    //把数组里面的不是字符串的东西,转成字符串
    // map[string]interface{} -> map[string]string
    static function valueStringOrEmpty($array){
        foreach($array as $k1=>$v1){
            $array[$k1] = TbfString::ToStringOrEmpty($array[$k1]);
        }
        return $array;
    }

    //从一个二维数据里面取出第一个(用于取出sql里面的count数据)
    static function first2D($a){
        if (empty($a)){
            return null;
        }
        return array_shift($a);
    }

    /**
     * 输入参数格式如下 []map[string]string
     * 数组key变换,忽略不存在的key
     * 可以用于翻译data grid的标题
     * @param $data
     * @param $table
     */
    public static function keyTran2DGrid($data,$table){
        $output = array();
        foreach($data as $row){
            $outRow = array();
            foreach($row as $k=>$v){
                if (!empty($table[$k])){
                    $k=$table[$k];
                }
                $row[$k] = $v;
            }
            $output[] = $outRow;
        }
        return $output;
    }

    static function mustKeyExistByList($row,$fieldList){
        foreach($fieldList as $field){
            if (!array_key_exists($field,$row)){
                TbfError::client('require field ['.$field.']');
            }
        }
    }

    //用到的机会比较少
    static function getKeyOrNull($a,$k){
        if (!empty($a[$k])){
            return $a[$k];
        }
        return null;
    }
    //用到的机会比较少
    static function getKeyOrDefault($a,$k,$default=null){
        if (!empty($a[$k])){
            return $a[$k];
        }
        return $default;
    }
}